Computers and other digital devices can have multiple components that are interconnected with a data bus or bus. The bus can allow one component to transact with a second component on the same bus. Components connected to the bus are commonly called agents and when an agent requests or initiates a transaction on the bus, that agent is typically called a requester. The requester may claim the bus for the duration of the transaction, preventing other agents from using the bus. Agents responding to the transaction initiated by the requester are typically called target devices.
One type of agent, called a bridge, can allow transactions initiated on one bus to complete on a second bus and may act as both a target device and a requesting agent. For example, when a requester initiates a transaction on a primary bus and the transaction requires interaction with an agent on a secondary bus, the bridge interconnecting the primary bus and the secondary bus can act as a target device on the primary bus and a requesting agent on the secondary bus. When the bridge acts as a requesting agent, referred to as an initiator, on the secondary bus, the bridge initiates a transaction equivalent to the transaction received on the primary bus. Initiating an equivalent transaction on the secondary bus is commonly referred to as forwarding the transaction. The target device may respond with data or a status of completion or error. The bridge stores the data or status to transfer to the requester when the primary bus becomes available. Then, the bridge can return data or a status to the requester by initiating a transaction on the primary bus.
When a bridge transfers a single transaction from a first bus to a second bus, the bridge may have idle time, causing agents that also need to use the bridge to have idle time. For example, a first agent and a second agent, both coupled to a first bus, may simultaneously request that the bridge process a transaction. The bridge can accept one transaction and may accept the transaction from the first agent. The second agent may remain idle until its transaction is processed. While attempting to forward the transaction of the first agent, the bridge can remain idle until the target device and second bus are available. Once a response is received from the target device, the bridge may remain idle until the primary bus is available to return the response to the first agent. Finally, the second agent can forward a transaction to the bridge when the first bus becomes available. This idle time of the second agent may be reduced by allowing a bridge to process more than one transaction, however, the second agent can still remain idle while waiting for the first transaction to complete on the second bus as well as the first bus.